From: Keir Fraser Date: Wed, 19 May 2010 11:51:16 +0000 (+0100) Subject: xl: Add subcommand "xl debug-keys" X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~12117 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=00c08b5e07087c7ff089df7cbecb4b9fb5039441;p=xen.git xl: Add subcommand "xl debug-keys" Can be used to send debug keys to Xen. Signed-off-by: Yu Zhiguo --- diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 948e845d5a..d6b8a90d23 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -2822,6 +2822,11 @@ int libxl_send_sysrq(struct libxl_ctx *ctx, uint32_t domid, char sysrq) return 0; } +int libxl_send_debug_keys(struct libxl_ctx *ctx, char *keys) +{ + return xc_send_debug_keys(ctx->xch, keys); +} + uint32_t libxl_vm_get_start_time(struct libxl_ctx *ctx, uint32_t domid) { char *dompath = libxl_xs_get_dompath(ctx, domid); diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index a3f949bab8..833c84652c 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -511,6 +511,7 @@ int libxl_sched_credit_domain_set(struct libxl_ctx *ctx, uint32_t domid, int libxl_send_trigger(struct libxl_ctx *ctx, uint32_t domid, char *trigger_name, uint32_t vcpuid); int libxl_send_sysrq(struct libxl_ctx *ctx, uint32_t domid, char sysrq); +int libxl_send_debug_keys(struct libxl_ctx *ctx, char *keys); uint32_t libxl_vm_get_start_time(struct libxl_ctx *ctx, uint32_t domid); char *libxl_tmem_list(struct libxl_ctx *ctx, uint32_t domid, int use_long); diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index e9fa1e2a5f..e6ce1d416d 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -3212,6 +3212,36 @@ int main_sysrq(int argc, char **argv) exit(0); } +int main_debug_keys(int argc, char **argv) +{ + int opt; + char *keys; + + while ((opt = getopt(argc, argv, "h")) != -1) { + switch (opt) { + case 'h': + help("debug-keys"); + exit(0); + default: + fprintf(stderr, "option not supported\n"); + break; + } + } + if (optind >= argc) { + help("debug-keys"); + exit(2); + } + + keys = argv[optind]; + + if (libxl_send_debug_keys(&ctx, keys)) { + fprintf(stderr, "cannot send debug keys: %s\n", keys); + exit(1); + } + + exit(0); +} + int main_top(int argc, char **argv) { int opt; diff --git a/tools/libxl/xl_cmdimpl.h b/tools/libxl/xl_cmdimpl.h index ebbf740fe4..66c8201598 100644 --- a/tools/libxl/xl_cmdimpl.h +++ b/tools/libxl/xl_cmdimpl.h @@ -44,6 +44,7 @@ int main_domname(int argc, char **argv); int main_rename(int argc, char **argv); int main_trigger(int argc, char **argv); int main_sysrq(int argc, char **argv); +int main_debug_keys(int argc, char **argv); int main_top(int argc, char **argv); int main_networkattach(int argc, char **argv); int main_networklist(int argc, char **argv); diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c index b1f87468e8..d34e569888 100644 --- a/tools/libxl/xl_cmdtable.c +++ b/tools/libxl/xl_cmdtable.c @@ -186,6 +186,11 @@ struct cmd_spec cmd_table[] = { "Send a sysrq to a domain", " ", }, + { "debug-keys", + &main_debug_keys, + "Send debug keys to Xen", + "", + }, { "top", &main_top, "Monitor a host and the domains in real time",